Skip to content

Fix site scoped contextinfo#9454

Open
jorisvanduyse wants to merge 2 commits into
microsoft:mainfrom
jorisvanduyse:fix-site-scoped-contextinfo
Open

Fix site scoped contextinfo#9454
jorisvanduyse wants to merge 2 commits into
microsoft:mainfrom
jorisvanduyse:fix-site-scoped-contextinfo

Conversation

@jorisvanduyse

@jorisvanduyse jorisvanduyse commented Jul 14, 2026

Copy link
Copy Markdown

What & why

This fixes SharePoint request-digest acquisition for site-scoped SharePoint URLs.

SharePoint Uri Builder.GetHost() intentionally returns only the hostname, but request-digest calls used it for /_api/contextinfo. For URLs such as https://tenant.sharepoint.com/sites/site, this caused the request to target the tenant root instead of the configured site.

The change adds a site-base URL accessor and uses it for request-digest acquisition in CreateList, both CreateListItem overloads, CreateFolder, and UpdateListItemMetaDataField. GetHost() remains unchanged for callers that require hostname-only behavior.

Regression tests verify that contextinfo requests retain the configured /sites/<site> path.

Linked work

Fixes #8932

How I validated this

  • I read the full diff and it contains only changes I intended.
  • I built the affected app(s) locally with zero compilation errors.
  • I ran the change in Business Central and confirmed it behaves as expected.
  • I added or updated tests for the new behavior, or explained below why none are needed.

What I tested and the outcome

  • Built the affected System Application and test applications locally with zero compilation errors.
  • Published a temporary System Application build to a disposable local BC29 container using normal synchronization and upgrade semantics.
  • Ran the SharePoint Client Test codeunit (132970) manually in the BC Test Tool.
  • Confirmed the regression before the fix:
    • Expected: site-scoped .../sites/<site>/_api/contextinfo/
    • Actual: tenant-root .../_api/contextinfo/
  • Published the fixed System Application and reran the same tests.
  • Confirmed that TestCreateFolder, TestCreateListRequestDigestUsesSiteScopedUrl, and TestCreateListItemRequestDigestUsesSiteScopedUrl pass with the fix applied.
  • Also verified the original scoped SharePoint scenario manually in a disposable v28.1 container.

Risk & compatibility

This is an internal URI-construction change with no schema, data-upgrade, permission, or public API contract changes.

GetHost() is unchanged. The new site-base URL accessor is used only for request-digest acquisition, ensuring existing hostname-only consumers retain their behavior.
Fixes #8932 is the GitHub issue link. GitHub will automatically link it, and close the issue when the PR is merged.

…soft#8932)

Adds coverage for CreateFolder, CreateList, and CreateListItem to assert
that the request digest (_api/contextinfo) is requested from the
site-scoped URL rather than the tenant root, so the fix keeps working
under Sites.Selected permissions.
@github-actions github-actions Bot added AL: System Application From Fork Pull request is coming from a fork labels Jul 14, 2026
@jorisvanduyse

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@github-actions github-actions Bot added the needs-approval Workflow runs require maintainer approval to start label Jul 14, 2026
@jorisvanduyse jorisvanduyse marked this pull request as ready for review July 15, 2026 14:53
@jorisvanduyse jorisvanduyse requested a review from a team July 15, 2026 14:53
@JesperSchulz JesperSchulz added the Integration GitHub request for Integration area label Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AL: System Application From Fork Pull request is coming from a fork Integration GitHub request for Integration area needs-approval Workflow runs require maintainer approval to start

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Sharepoint External File Account uses tenant-root contextinfo endpoint, failing under scoped Sites.Selected

2 participants